﻿// ———————————————————————–
// <copyright file="UriTemplates.cs" company="The MITRE Corporation">
//    Copyright (c) 2010 The MITRE Corporation. All rights reserved.
//    Licensed under the Apache License, Version 2.0 (the "License");
//    you may not use this file except in compliance with the License.
//    You may obtain a copy of the License at
//    http://www.apache.org/licenses/LICENSE-2.0
//    Unless required by applicable law or agreed to in writing, software
//    distributed under the License is distributed on an "AS IS" BASIS,
//    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
//    See the License for the specific language governing permissions and
//    limitations under the License.
// </copyright>
// ———————————————————————–
/////////////////////////////////////////////////////////////////////////////////////////////////
// UriTemplates.cs - Contains The REST-ful URI Templates for the IC.NET Services
// Project: IC.NETSOA- ICNETREST
//
// Language:    C#, .NET 4.0
// Platform:    Dell XPS m1530 Windows 7, VS 2010
// Author:      Don McGarry MITRE Rome
//              dmcgarry@mitre.org, (315) 838-2669
/////////////////////////////////////////////////////////////////////////////////////////////////

// Copyright (c) 2010 The MITRE Corporation. All rights reserved.
//
// NOTICE
// This software was produced for the U. S. Government
// under Contract No. FA8721-09-C-0001, and is
// subject to the Rights in Noncommercial Computer Software
// and Noncommercial Computer Software Documentation Clause
// (DFARS) 252.227-7014 (JUN 1995)
                
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace ICNETREST
{
  /// <summary>
  /// Contains The REST-ful URI Templates for the IC.NET Services
  /// </summary>
  public static class UriTemplates
  {
    /// <summary>
    /// the URI template for retrieving all Available feeds. (same as Available/XML/{format})
    /// </summary>
    public const string AvailableFeedUri = "Available/{Format}";

    /// <summary>
    /// the URI template for retrieving all Available feeds as XML.
    /// </summary>
    public const string AvailableFeedAsXMLUri = "Available/XML/{format}";

    /// <summary>
    /// the URI template for retrieving all Available feeds as RSS.
    /// </summary>
    public const string AvailableFeedAsRSSUri = "Available/RSS/{format}";

    /// <summary>
    /// the URI template for retrieving all GeoRSS feeds.
    /// </summary>
    public const string AllGeoRSSUri = "All/GeoRSS";


    /// <summary>
    /// the URI template for retrieving all feeds.
    /// </summary>
    public const string AllFormatUri = "All/{Format}";

    /// <summary>
    /// the URI template for retrieving GeoRSS feeds for a certain role .
    /// </summary>
    public const string RoleGeoRSSUri = "{Role}/GeoRSS?RoleURI={RoleURI}";


    /// <summary>
    /// the URI template for retrieving all GeoRSS feeds for a role. Also requires the input of the URI that the value list was derived from .
    /// </summary>
    public const string RoleParamGeoRSSUri = "GeoRSS?RoleURI={RoleURI}&Role={Role}";


    /// <summary>
    /// the URI template for retrieving all Roles in a user-specified format. Also requires the input of the URI that the value list was derived from .
    /// </summary>
    public const string RoleFormatUri = "{Role}/{Format}?RoleURI={RoleURI}";

    /// <summary>
    /// the URI template for retrieving all Router Rules for a valuelist value. Also requires the input of the URI that the value list was derived from .
    /// </summary>
    public const string RuleUri = "Rule?ValueListURN={ValueListURN}&Value={Value}";

    /// <summary>
    /// the URI template for retrieving all Router Rules for a valuelist value. Also requires the input of the URI that the value list was derived from .
    /// </summary>
    public const string ValListUri = "ValueList?ValueListURN={ValueListURN}";

    /// <summary>
    /// the URI template for retrieving all Router Rules for a valuelist value. Also requires the input of the URI that the value list was derived from .
    /// </summary>
    public const string FullValListUri = "ValueList?ValueListURN={ValueListURN}&Value={Value}";

    #region ActiveFeedUrls
    /// <summary>
    /// the URI template for retrieving all GeoRSS feeds.
    /// </summary>
    public const string ActiveGeoRSSUri = "Active/GeoRSS";


    /// <summary>
    /// the URI template for retrieving all feeds.
    /// </summary>
    public const string ActiveFormatUri = "Active/{Format}";

    /// <summary>
    /// the URI template for retrieving GeoRSS feeds for a certain role .
    /// </summary>
    public const string ActiveRoleGeoRSSUri = "Active/{Role}/GeoRSS?RoleURI={RoleURI}";

    /// <summary>
    /// the URI template for retrieving active KML feed for a certain role .
    /// </summary>
    public const string ActiveRoleKMLUri = "Active/{Role}/KML?RoleURI={RoleURI}";

    /// <summary>
    /// the URI template for retrieving active KML Link feed for a certain role .
    /// </summary>
    public const string ActiveRoleKMLLinkUri = "Active/{Role}/KMLLink?RoleURI={RoleURI}";


    /// <summary>
    /// the URI template for retrieving all GeoRSS feeds for a role. Also requires the input of the URI that the value list was derived from .
    /// </summary>
    public const string ActiveRoleParamGeoRSSUri = "Active/GeoRSS?RoleURI={RoleURI}&Role={Role}";


    /// <summary>
    /// the URI template for retrieving all Roles in a user-specified format. Also requires the input of the URI that the value list was derived from .
    /// </summary>
    //public const string ActiveRoleFormatUri = "Active/{Role}/{Format}?RoleURI={RoleURI}";
    #endregion ActiveFeedUrls

    #region ExpiredFeedUrls
    /// <summary>
    /// the URI template for retrieving all GeoRSS feeds.
    /// </summary>
    public const string ExpiredGeoRSSUri = "Expired/GeoRSS";


    /// <summary>
    /// the URI template for retrieving all feeds.
    /// </summary>
    public const string ExpiredFormatUri = "Expired/{Format}";

    /// <summary>
    /// the URI template for retrieving GeoRSS feeds for a certain role .
    /// </summary>
    public const string ExpiredRoleGeoRSSUri = "Expired/{Role}/GeoRSS?RoleURI={RoleURI}";

    /// <summary>
    /// the URI template for retrieving all GeoRSS feeds for a role. Also requires the input of the URI that the value list was derived from .
    /// </summary>
    public const string ExpiredRoleParamGeoRSSUri = "Expired/GeoRSS?RoleURI={RoleURI}&Role={Role}";

    /// <summary>
    /// the URI template for retrieving all Roles in a user-specified format. Also requires the input of the URI that the value list was derived from .
    /// </summary>
    //public const string ExpiredRoleFormatUri = "Expired/{Role}/{Format}?RoleURI={RoleURI}";
    #endregion ExpiredFeedUrls
    #region UpdatedFeedUrls

    /// <summary>
    /// the URI template for retrieving all feeds.
    /// </summary>
    public const string UpdatedFormatUri = "Updated/{Format}?Since={Since}";

    /// <summary>
    /// the URI template for retrieving GeoRSS feeds for a certain role .
    /// </summary>
    public const string UpdatedRoleGeoRSSUri = "Updated/{Role}/GeoRSS?Since={Since}&RoleURI={RoleURI}";

    /// <summary>
    /// the URI template for retrieving all GeoRSS feeds for a role. Also requires the input of the URI that the value list was derived from .
    /// </summary>
    public const string UpdatedRoleParamGeoRSSUri = "Updated/GeoRSS?Since={Since}&RoleURI={RoleURI}&Role={Role}";

    /// <summary>
    /// the URI template for retrieving all Roles in a user-specified format. Also requires the input of the URI that the value list was derived from .
    /// </summary>
   // public const string UpdatedRoleFormatUri = "Updated/{Role}/{Format}?Since={Since}&RoleURI={RoleURI}";

    /// <summary>
    /// the URI template for retrieving all Roles in a user-specified format. Also requires the input of the URI that the value list was derived from .
    /// </summary>
    //public const string UpdatedRoleGeoRSSUri2 = "{Param1}/GeoRSS?Since={Since}&Role={Role}&RoleURI={RoleURI}"; 
    #endregion UpdatedFeedUrls
  }
}